package com.stm.bi.dto.query;

import com.stm.framework.annotation.ReqParam;
import org.apache.commons.lang3.tuple.Pair;

import java.util.List;
import java.util.Map;

public class DimensionDataGroupQry {

    @ReqParam(label = "组织编码", required = true)
    private String orgNo;

    @ReqParam(label = "部门ID")
    private Long deptId;

    @ReqParam(label = "部门ID集合")
    private List<Long> deptIds;

    @ReqParam(label = "时间类型")
    private String dateType;

    @ReqParam(label = "开始时间")
    private String startDate;

    @ReqParam(label = "结束时间")
    private String endDate;

    @ReqParam(label = "其他查询条件")
    private Map<String, Object> otherConditions;

    @ReqParam(label = "聚合条件")
    private List<String> groupBy;

    @ReqParam(label = "聚合字段")
    private List<GroupField> groupFields;

    @ReqParam(label = "排序字段")
    private String orderBy;

    @ReqParam(label = "排序类型")
    private String orderType;

    @ReqParam(label = "销售类型")
    private String salesType;

    @ReqParam(label = "条数限制")
    private Pair<Integer, Integer> limit;

    public Pair<Integer, Integer> getLimit() {
        return limit;
    }

    public DimensionDataGroupQry setLimit(Pair<Integer, Integer> limit) {
        this.limit = limit;
        return this;
    }

    public String getOrgNo() {
        return orgNo;
    }

    public DimensionDataGroupQry setOrgNo(String orgNo) {
        this.orgNo = orgNo;
        return this;
    }


    public String getSalesType() {
        return salesType;
    }

    public DimensionDataGroupQry setSalesType(String salesType) {
        this.salesType = salesType;
        return this;
    }

    public Long getDeptId() {
        return deptId;
    }

    public DimensionDataGroupQry setDeptId(Long deptId) {
        this.deptId = deptId;
        return this;
    }

    public List<Long> getDeptIds() {
        return deptIds;
    }

    public DimensionDataGroupQry setDeptIds(List<Long> deptIds) {
        this.deptIds = deptIds;
        return this;
    }

    public String getDateType() {
        return dateType;
    }

    public DimensionDataGroupQry setDateType(String dateType) {
        this.dateType = dateType;
        return this;
    }

    public String getStartDate() {
        return startDate;
    }

    public DimensionDataGroupQry setStartDate(String startDate) {
        this.startDate = startDate;
        return this;
    }

    public String getEndDate() {
        return endDate;
    }

    public DimensionDataGroupQry setEndDate(String endDate) {
        this.endDate = endDate;
        return this;
    }

    public Map<String, Object> getOtherConditions() {
        return otherConditions;
    }

    public DimensionDataGroupQry setOtherConditions(Map<String, Object> otherConditions) {
        this.otherConditions = otherConditions;
        return this;
    }

    public List<String> getGroupBy() {
        return groupBy;
    }

    public DimensionDataGroupQry setGroupBy(List<String> groupBy) {
        this.groupBy = groupBy;
        return this;
    }

    public List<GroupField> getGroupFields() {
        return groupFields;
    }

    public DimensionDataGroupQry setGroupFields(List<GroupField> groupFields) {
        this.groupFields = groupFields;
        return this;
    }

    public String getOrderBy() {
        return orderBy;
    }

    public DimensionDataGroupQry setOrderBy(String orderBy) {
        this.orderBy = orderBy;
        return this;
    }

    public String getOrderType() {
        return orderType;
    }

    public DimensionDataGroupQry setOrderType(String orderType) {
        this.orderType = orderType;
        return this;
    }
}
